package com.star.system.mapper;

import com.star.system.entity.Role;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.star.system.entity.User;
import com.star.system.vo.RoleDetailVO;
import com.star.system.vo.RolePageVO;
import com.star.system.vo.RoleSimpleVO;
import com.star.system.vo.UserRoleVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * 角色 Mapper 接口
 *
 * @author yangzj
 */
public interface RoleMapper extends BaseMapper<Role> {

    /**
     * 用户角色编码列表
     *
     * @param userId 用户id
     * @return {@link Set}<{@link String}>
     */
    Set<String> getRoles(@Param("userId") Long userId);
    /**
     * 用户权限标识列表
     *
     * @param userId 用户id
     * @return {@link Set}<{@link String}>
     */
    Set<String> getAuthorities(@Param("userId") Long userId);

    /**
     * 列表
     *
     * @return {@link List}<{@link RolePageVO}>
     */
    List<RolePageVO> listPage();

    /**
     * 获取详情
     *
     * @param id id
     * @return {@link RoleDetailVO}
     */
    RoleDetailVO getDetail(@Param("id") Long id);

    /**
     * 用户角色列表
     *
     * @param userIds 用户id
     * @return {@link List}<{@link UserRoleVO}>
     */
    List<UserRoleVO> listUserRole(@Param("userIds") List<Long> userIds);

    /**
     * 列出所有
     *
     * @return {@link List}<{@link RoleSimpleVO}>
     */
    List<RoleSimpleVO> listAll();

    /**
     * 列表用户通过ids
     *
     * @param ids 角色ids
     * @return {@link List}<{@link User}>
     */
    List<User> listUserByIds(@Param("roleIds") List<Long> ids);
}
